#ifndef __DRI_I2C_H__
#define __DRI_I2C_H__


#include "Com_Util.h"
#include "stdio.h"
//宏定义延时函数
#define I2C_DEIAY Delay_us(10)

#define SCL_HIGH (GPIOB->ODR |= GPIO_ODR_ODR6)
#define SCL_LOW (GPIOB->ODR &= ~GPIO_ODR_ODR6)
#define SDA_HIGH (GPIOB->ODR |= GPIO_ODR_ODR7)
#define SDA_LOW (GPIOB->ODR &= ~GPIO_ODR_ODR7)
//应答电平
#define ACK 0
//非应答电平
#define NACK 1

//读取数据总线状态
#define READ_SDA (GPIOB->IDR & GPIO_IDR_IDR7)

/**
 * @brief I2C初始化
 * 
 */
void Dri_I2C_Init(void);
/**
 * @brief 开始信号
 * 
 */
void Dri_I2C_Start(void);

/**
 * @brief 结束信号
 * 
 */
void Dri_I2C_Stop(void);

/**
 * @brief 应答
 * 
 */
void Dri_I2C_Ack(void);

/**
 * @brief 非应答
 * 
 */
void Dri_I2C_Nack(void);

/**
 * @brief 主机等待从机发送应答信号
 * 
 * @return uint8_t 返回 1 表示应答 返回 0 表示为应答
 */
uint8_t Dri_I2C_Wait4Nack(void);

/**
 * @brief 发送一个字符
 * 
 * @param byte 
 */
void Dri_I2C_WriteByte(uint8_t byte);

/**
 * @brief 读取一个字符
 * 
 * @return uint8_t 
 */
uint8_t Dri_I2C_ReadByte(void);

#endif
